#ifndef INTERFACE_SCENE_ASCENE_HPP_
# define INTERFACE_SCENE_ASCENE_HPP_

# include "Class/Manager/Graphics.hpp"
# include "Class/Manager/Input.hpp"

namespace		Scene
{
  class			AScene
  {
  public:
	enum		State
	  {
		None,
		Change,
		ChangeAll,
		BlockAll,
		Delete,
		DeleteAll,
		States
	  };


  public:
	explicit AScene(Manager::Graphics &, Manager::Input const &);

	virtual bool			Update(float) = 0;
	virtual void			Draw() const throw() = 0;

	State					GetState() const throw();
	bool					Active() const throw();
	bool					Active(bool) throw();
	bool					Visible() const throw();
	bool					Visible(bool) throw();

	virtual ~AScene() throw();


  protected:
	Manager::Graphics		&_Graphics;
	Manager::Input const	&_Input;

	bool					_isActive;
	bool					_isVisible;

	State					_state;
  };
}

#endif
